home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1997 December / PC Pro December 1997 CD-Rom coverdisc.iso / symantec / dbAnywh / JAVA.BIN / CLASSES.ZIP / sun / tools / asm / ConstantPool.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-12-14  |  2.6 KB  |  71 lines

  1. package sun.tools.asm;
  2.  
  3. import java.io.DataOutputStream;
  4. import java.io.IOException;
  5. import java.util.Enumeration;
  6. import java.util.Hashtable;
  7. import sun.tools.java.ClassDeclaration;
  8. import sun.tools.java.Environment;
  9. import sun.tools.java.FieldDefinition;
  10. import sun.tools.java.RuntimeConstants;
  11. import sun.tools.java.Type;
  12. import sun.tools.tree.StringExpression;
  13.  
  14. public final class ConstantPool implements RuntimeConstants {
  15.    Hashtable hash = new Hashtable(101);
  16.  
  17.    public int index(Object var1) {
  18.       return ((ConstantPoolData)this.hash.get(var1)).index;
  19.    }
  20.  
  21.    public void put(Object var1) {
  22.       Object var2 = (ConstantPoolData)this.hash.get(var1);
  23.       if (var2 == null) {
  24.          if (var1 instanceof String) {
  25.             var2 = new StringConstantData(this, (String)var1);
  26.          } else if (var1 instanceof StringExpression) {
  27.             var2 = new StringExpressionConstantData(this, (StringExpression)var1);
  28.          } else if (var1 instanceof ClassDeclaration) {
  29.             var2 = new ClassConstantData(this, (ClassDeclaration)var1);
  30.          } else if (var1 instanceof Type) {
  31.             var2 = new ClassConstantData(this, (Type)var1);
  32.          } else if (var1 instanceof FieldDefinition) {
  33.             var2 = new FieldConstantData(this, (FieldDefinition)var1);
  34.          } else if (var1 instanceof NameAndTypeData) {
  35.             var2 = new NameAndTypeConstantData(this, (NameAndTypeData)var1);
  36.          } else if (var1 instanceof Number) {
  37.             var2 = new NumberConstantData(this, (Number)var1);
  38.          }
  39.  
  40.          this.hash.put(var1, var2);
  41.       }
  42.  
  43.    }
  44.  
  45.    public void write(Environment var1, DataOutputStream var2) throws IOException {
  46.       ConstantPoolData[] var3 = new ConstantPoolData[this.hash.size()];
  47.       int var4 = 1;
  48.       int var5 = 0;
  49.  
  50.       for(int var6 = 0; var6 < 5; ++var6) {
  51.          Enumeration var7 = this.hash.elements();
  52.  
  53.          while(var7.hasMoreElements()) {
  54.             ConstantPoolData var8 = (ConstantPoolData)var7.nextElement();
  55.             if (var8.order() == var6) {
  56.                var3[var5++] = var8;
  57.                var8.index = var4;
  58.                var4 += var8.width();
  59.             }
  60.          }
  61.       }
  62.  
  63.       var2.writeShort(var4);
  64.  
  65.       for(int var9 = 0; var9 < var5; ++var9) {
  66.          var3[var9].write(var1, var2, this);
  67.       }
  68.  
  69.    }
  70. }
  71.